#ifndef LOCKFILE_H_
#define LOCKFILE_H_

#include <unistd.h>
#include <fcntl.h>
#include <string>

using namespace std;

class LockFile {

private:

	struct flock fl;
	int fd;
	string nombre;
	bool debug;

public:

	/*Todos los métodos lanzan excepciones de tipo string (con un mensaje de error)*/

	LockFile ( const char* nombre, bool debug );
	virtual ~LockFile();
	/*Bloquea el proceso hasta que pueda establecer el lock de escritura sobre el archivo*/
	void tomarLock (bool cancelLogging=false);
	/*Libera el lock establecido sobre el archivo*/
	void liberarLock (bool cancelLogging=false);
	/*Escribe al final del archivo*/
	void escribir ( const char* buffer,int buffsize );
	/*Borra el contenido existente en el archivo y escribe desde el inicio del mismo*/
	void reemplazar ( const char* buffer,int buffsize );
};

#endif /* LOCKFILE_H_ */
